void makefail()
{
	for(dd[ll=rr=0]=1;ll<=rr;ll++)
	{
		now=dd[ll];
		for(int i=0;i<4;i++) if (c[now][i])
		{
			for(nxt=fail[now];nxt;nxt=fail[nxt])
				if (c[nxt][i]) break;
			if (nxt) fail[c[now][i]]=c[nxt][i]; else fail[c[now][i]]=1;
			if (ed[fail[c[now][i]]] || ed[now]) ed[c[now][i]]=1;
			dd[++rr]=c[now][i];
		}
	}
}